package clases;

/**
  *  4g3nt
  *  Copyright (C) 2008  Carlos Molinero y César Andrés
  *
  *  This program is free software: you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
  *  the Free Software Foundation, either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  This program is distributed in the hope that it will be useful,
  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *  GNU General Public License for more details.
  *
  *    You should have received a copy of the GNU General Public License
  *    along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  */
public class Mensajes {
    /**
     * El el tipo del mensaje:
     *      1 Empezar trabajo
     *      2 Finalizar trabajo
     */
    int _id; 
    ParesAC _idorigen;
    ParesAC _iddestino;
    float _tiempo;
    String _funcionCreaccion="";
    String _funcionDestruccion="";
    public final static int IDENTIFICACION=1;
    public final static int RESPUESTA=2;
    public final static int EMPEZARTRABAJO=3;
    public final static int FINALIZARTRABAJO=4;
    public Mensajes()
    {
    	
    }
    public String getFuncionCreaccion()
    {
    	return _funcionCreaccion;
    }
    public Mensajes(Mensajes copia)
    {
    	_id = copia._id;
    	if (copia._idorigen==null)_idorigen=null;
    	else _idorigen = new ParesAC(copia._idorigen);
    	if (copia._iddestino==null)_iddestino=null;
    	else _iddestino = new ParesAC(copia._iddestino);
    	
    	_tiempo = copia._tiempo;
    	_funcionCreaccion = copia._funcionCreaccion;
    	_funcionDestruccion = copia._funcionDestruccion;
    }

    @Override
    public String toString()
    {
    	String resultado =_id+"</td><td>";
    	
    	if (_idorigen !=null)
    	{
        	resultado += "o("+_idorigen.toString()+")</td><td>";
    		
    	}else
    	{
    		resultado += "o(null,null)</td><td>";
    	}
    	if (_iddestino !=null)
    	{
        	resultado += "d("+_iddestino.toString()+")</td><td>";
    		
    	}else
    	{
    		resultado += "d(null,null)</td><td>";
    	}
    	
    	
    	return resultado+"t("+_tiempo+")</td><td>"+"fc("+_funcionCreaccion+")</td><td>"+"fd("+_funcionDestruccion+")</td><td>"+System.currentTimeMillis();
    }

    public ParesAC getDestino()
    {
    	return _iddestino;
    }
    public ParesAC getOrigen()
    {
    	return _idorigen;
    }
    public static Mensajes mensajeIdentificacion(ParesAC origen, String funcionCreaccion)
    {
    	Mensajes  m = new Mensajes();
    	m._id = Mensajes.IDENTIFICACION;
    	m._idorigen =  origen;
    	m._iddestino = null;
    	m._funcionCreaccion = funcionCreaccion;
    	m._funcionDestruccion = null;
    	return m;
    }  
    public static Mensajes mensajeRespuestaPeticion(ParesAC origen, ParesAC destino, String funcionCreaccion,float tiempo, String funcionDestruccion)
    {
    	Mensajes  m = new Mensajes();
    	m._id = Mensajes.RESPUESTA;
    	m._idorigen =  origen;
    	m._iddestino = destino;
    	m._funcionCreaccion = funcionCreaccion;
    	m._tiempo = tiempo;
    	m._funcionDestruccion = funcionDestruccion;
    	return m;
    }  
    public static Mensajes startJob(ParesAC origen, ParesAC destino)
    {
    	Mensajes  m = new Mensajes();
    	m._id= Mensajes.EMPEZARTRABAJO;
    	m._idorigen= origen;
    	m._iddestino= destino;
    	return m;
    	
    	
    }
    public static Mensajes finishJob(ParesAC origen, ParesAC destino)
    {
    	Mensajes  m = new Mensajes();
    	m._id= Mensajes.FINALIZARTRABAJO;
    	m._idorigen= origen;
    	m._iddestino= destino;    	
    	return m;
    }
    public int getID()
    {
    	return _id;
    }
}